# 题目: 1221. 分割平衡字符串
在一个 平衡字符串 中,'L' 和 'R' 字符的数量是相同的。
给你一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。
注意:分割得到的每个字符串都必须是平衡字符串。
返回可以通过分割得到的平衡字符串的 最大数量 。
# 示例 1
输入:s = "RLRRLLRLRL"
输出:4
解释:s 可以分割为 "RL"、"RRLL"、"RL"、"RL" ,每个子字符串中都包含相同数量的 'L' 和 'R' 。
# 示例 2
输入:s = "RLLLLRRRLR"
输出:3
解释:s 可以分割为 "RL"、"LLLRRR"、"LR" ,每个子字符串中都包含相同数量的 'L' 和 'R' 。
# 题解: 贪心
对于一个平衡字符串,但从某个地方截取出一个平衡字符串,那么剩下的必然也是一个平衡字符串。
所以,我们可以遍历字符串s,对单个字符进行统计(flag=0)
- 当 是 L,则 flag++
- 当 是 R,则 flag--
- 当 flag再次为0,则说明前面的为一个平衡字符串。
- 剩下的也为平衡字符串,就继续遍历,直到遍历完字符串
# 代码
/**
* @param {string} s
* @return {number}
*/
var balancedStringSplit = function(s) {
let ans =0, d=0;
for(let i=0;i<s.length;i++){
let ch = s[i]
if(ch ==='R') ++d
else --d
if(d ===0) ans++
}
return ans
};